package find.the.number.that.is.only;
/**
 * @Time 2019/12/14
 * @author 王光浩
 * @Introduction 需求：从一个数组中找到一个唯一的不重复的数据（除了这个数据外其他的都是成对出现）
  *                                思路：使用异或位运算（a^b^b=a,a^a=0)位运算还可以用于对文件进行加码，或者可以用于交换两个变量的值。
 *               step：
 *                                     对整个数组进行遍历，将所有结果进行异或运算，最后得到的结果就是我们找到的数字。
 *               i复杂度分析：时间复杂度为O（n），空间复杂度为O（1）
 */
public class OtherMethod {
    public int singleNumber(int[] nums) {
    	int result=0;
    	//循环对数组中所有数据进行异或操作，将得到的结果返回即可
    	for(int i:nums) {
    		result^=i; 
    	}
    	return result;
    }
}
